package cn.slipi.admin.service;

import cn.slipi.admin.entity.TSysMenu;
import cn.slipi.admin.entity.TSysRoleMenu;
import cn.slipi.admin.service.dto.in.m.MenuSaveDTO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 系统菜单表 服务类
 * </p>
 *
 * @author lee
 * @since 2020-10-09
 */
public interface TSysMenuService extends IService<TSysMenu> {

    /**
     * 添加菜单
     *
     * @param menuSaveDTO
     * @return
     */
    Integer addMenu(MenuSaveDTO menuSaveDTO);

    /**
     * 更新菜单
     *
     * @param mid
     * @param menuSaveDTO
     * @return
     */
    Boolean updateMenu(Integer mid, MenuSaveDTO menuSaveDTO);

    /**
     * 删除菜单
     *
     * @param mid
     * @return
     */
    Boolean deleteMenu(Integer mid);

    /**
     * 保存角色拥有菜单
     *
     * @param rid
     * @param menuIds
     * @return
     */
    Boolean saveRoleMenu(Integer rid, List<Integer> menuIds);

    /**
     * 获取所有菜单列表（前端自构建tree）
     *
     * @param show
     * @return
     */
    List<TSysMenu> getMenuList(Integer show);

    /**
     * 根据父级ids获取菜单
     *
     * @param pids
     * @param show
     * @return
     */
    List<TSysMenu> getMenuByPids(List<Integer> pids, Integer show);

    /**
     * 根据父级ids获取菜单指定id
     *
     * @param pids
     * @param menuIds
     * @param show
     * @return
     */
    List<TSysMenu> getMenuByPidsAndIds(List<Integer> pids, List<Integer> menuIds, Integer show);

    /**
     * 根据菜单ids获取菜单
     *
     * @param ids
     * @return
     */
    List<TSysMenu> getMenuByIds(List<Integer> ids);

    /**
     * 根据级别获取菜单
     *
     * @param level
     * @param show
     * @return
     */
    List<TSysMenu> getMenuByLevel(Integer level, Integer show);

    /**
     * 根据级别获取菜单并且规定id
     *
     * @param level
     * @param menuIds
     * @param show
     * @return
     */
    List<TSysMenu> getMenuByLevelAndIds(Integer level, List<Integer> menuIds, Integer show);

    /**
     * 获取角色拥有菜单
     *
     * @param rid
     * @param rid
     * @return
     */
    List<TSysRoleMenu> getRoleMenuListByRoleId(Integer rid);
}
